package co.com.desarrollo.pedidos.services;

import java.util.List;

import co.com.desarrollo.pedidos.entities.Producto;
import co.com.desarrollo.pedidos.entities.TipoProducto;
import co.com.desarrollo.pedidos.services.exceptions.ProductoNotFoundException;
import co.com.desarrollo.pedidos.services.exceptions.TipoProductoNotFoundException;

public interface ProductoService {
	
	/*TIPO PRODUCTO*/
	public TipoProducto setTipoProducto(TipoProducto tipoProducto);
	public TipoProducto getTipoProductoById(TipoProducto tipoProducto);
	public TipoProducto getTipoProductoByName(TipoProducto tipoProducto);
	public List<TipoProducto> getAllTipoProducto();
	public void deleteTipoProductoById(TipoProducto tipoProducto);
	public TipoProducto findTipoProductoBothMethods(TipoProducto tipoProducto) throws TipoProductoNotFoundException;
	
	
	/*PRODUCTOS*/
	public Producto setProducto(Producto producto) throws TipoProductoNotFoundException;
	public Producto activarProducto(Producto producto) throws ProductoNotFoundException, TipoProductoNotFoundException;
	public Producto desactivarProducto(Producto producto) throws ProductoNotFoundException, TipoProductoNotFoundException;
	public Producto getProductoById(Producto producto);
	public Producto getProductoByName(Producto producto);
	public List<Producto> getAllProductos();
	public List<Producto> getProductosActivos();
	public List<Producto> getProductosActivosByTipoProducto(TipoProducto tipoProducto) throws TipoProductoNotFoundException;
	public Producto findProductoBothMethods(Producto producto) throws ProductoNotFoundException;
}
